package model

import (
	"github.com/gogf/gf/os/gtime"
)

type Article struct {
	Id           int64       `orm:"id,primary"   json:"id"`                   // ID
	Title        string      `orm:"title"        json:"title"`                // 标题
	Content      string      `orm:"content"      json:"content"`              // 内容
	CategoryName string      `orm:"category_name"        json:"categoryName"` // 分类名
	CategoryId   int64       `orm:"category_id"  json:"categoryId"`           // 分类id
	DeletedAt    *gtime.Time `orm:"deleted_at"   json:"deletedAt"`            // 删除时间
	CreatedAt    *gtime.Time `orm:"created_at"   json:"createdAt"`            // 创建时间
	UpdatedAt    *gtime.Time `orm:"updated_at"   json:"updatedAt"`            // 更新时间
}

type EsArticle struct {
	Id               int64  `json:"id"`
	Title            string `json:"title"`
	Content          string `json:"content"`
	ContentHighlight string `json:"content_highlight"`
	CategoryName     string `json:"category_name"`
	CategoryId       int64  `json:"category_id"`
	//DeletedAt    *gtime.Time `json:"deleted_at"`
	CreatedAt *gtime.Time `json:"created_at"`
	UpdatedAt *gtime.Time `json:"updated_at"`
}

type ArticleApiReq struct {
	Title      string `v:"required#标题不能为空"`
	Content    string `v:"required#内容不能为空!"`
	CategoryId int    `v:"required|integer#分类不能为空!|分类id必须为整数"`
}

type ArticleApiSaveReq struct {
	Id         int    `v:"required|integer#文章id不能为空|请输入正确的文章id"`
	Title      string `v:"required#标题不能为空"`
	Content    string `v:"required#内容不能为空!"`
	CategoryId int    `v:"required|integer#分类不能为空!|分类id必须为整数"`
}

type ArticleApiInfoReq struct {
	Id int `v:"required|integer#文章id不能为空|请输入正确的文章id"`
}

type ArticleApiListReq struct {
	CategoryId int `v:"integer#!分类错误"`
	ArticleGetListInput
}

type ArticleGetListInput struct {
	Page       int
	Size       int
	CategoryId int
	Keywords   string
}

type ArticleGetListOutput struct {
	List   []ArticleGetListOutputItem `json:"list"`   // 列表
	Page   int                        `json:"page"`   // 分页码
	Size   int                        `json:"size"`   // 分页数量
	Total  int                        `json:"total"`  // 数据总数
	Count  int                        `json:"count"`  // 当页总数
	Result interface{}                `json:"result"` // 结果集
}

// 查询列表结果项
type ArticleGetListOutputItem struct {
	Article Article `json:"article"`
}

type Hits struct {
	Total Total         `json:"total"`
	Hits  []interface{} `json:"hits"`
}

type Total struct {
	Value int `json:"value"`
}
